package com.bsj.travel.mqtt.service;

import com.bsj.travel.def.mqtt.message.SendMqttMsg;
import com.bsj.travel.def.mqtt.message.node.MqttServerNode;

import java.util.List;

/**
 * @author yinhao
 * @version 1.0
 * @description mqtt broker 服务
 * @date 2023/11/9
 */
public interface MqttBrokerService {

    /**
     * 获取服务节点
     * @return 服务节点集合
     */
    List<MqttServerNode> getNodes();

    /**
     * 获取所有在线的客户端数量
     * @return
     */
    long getOnlineClientSize();

    /**
     * 获取对应服务节点的客户端数量
     * @param nodeName
     * @return
     */
    long getOnlineClientSize(String nodeName);

    /**
     * 用于内部集群间MQTT消息下行
     * @param sendMqttMsg
     * @return
     */
    Boolean sendMsg(SendMqttMsg sendMqttMsg);

    /**
     * 用于内部Mqtt连接状态管理
     * @param username
     * @return
     */
    Boolean mqttConnectTake(String username);
}
